package fr.louloutes.lolshooter;

import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;

/**
 * @author Louloute Splash Activity.
 *         <ul>
 *         <li>Affiche un logo, potentiellement animé, contenant le nom de
 *         l'appli</li>
 *         <li>Affiche numéro de version</li>
 *         <li>Transitionner automatiquement vers le MenuAct</li>
 *         </ul>
 */
public class SplashAct extends LOLActivity
{
	/** Called when the activity is first created. */
	@Override
	public void onCreate( Bundle savedInstanceState )
	{
		Utils.Log( "Splash onCreate", this );
		super.onCreate( savedInstanceState );
		setContentView( R.layout.splash );

		// Tests sur les préférences
		SharedPreferences settings = getSharedPreferences( GAME_PREFERENCES,
				MODE_PRIVATE );
		SharedPreferences.Editor prefEditor = settings.edit();
		prefEditor.putString( "UserName", "Louloute" );
		prefEditor.putInt( "BestScore", 42 );
		prefEditor.commit();

		/* Animation du logo */
		ImageView imageView_splash_logo = ( ImageView ) findViewById( R.id.imageSplash );

		// // Animation fade in, fade out
		// Animation anim = AnimationUtils.loadAnimation( this, R.anim.fading
		// );

		// // Animation rotation + scale + alpha
		Animation spin = AnimationUtils
				.loadAnimation( this, R.anim.custom_anim );

		// // Démarrer l'animation
		imageView_splash_logo.startAnimation( spin );

		/* Animation du sous titre */
		// // Animation fade in simple, avec délai
		TextView textView_subtitle1 = ( TextView ) findViewById( R.id.textView_splash_subtitle1 );
		TextView textView_subtitle2 = ( TextView ) findViewById( R.id.textView_splash_subtitle2 );
		Animation fade_in1 = AnimationUtils.loadAnimation( this,
				R.anim.fade_in1 );
		Animation fade_in2 = AnimationUtils.loadAnimation( this,
				R.anim.fade_in2 );
		textView_subtitle1.startAnimation( fade_in1 );
		textView_subtitle2.startAnimation( fade_in2 );

		/* Transition vers MenuAct */
		fade_in2.setAnimationListener( new AnimationListener()
		{

			@Override
			public void onAnimationStart( Animation animation )
			{
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationRepeat( Animation animation )
			{
				// TODO Auto-generated method stub

			}

			@Override
			public void onAnimationEnd( Animation animation )
			{
				// Démarrer le Menu Act !
				startActivity( new Intent( SplashAct.this, MenuAct.class ) );
				// Détruire l'activité, empêchant ainsi de revenir sur le splash
				// screen à partir du menu
				SplashAct.this.finish();
			}
		} );

		// RQ: les autres fichiers d'animation sont des tests,, qui pourront
		// resservir plus tard

		// URL pour plus tard: http://www.youtube.com/watch?v=-asH0Pn-G-c&NR=1

	}

	@Override
	public void onStart()
	{
		Utils.Log( "Splash onStart", this );
		super.onStart();
	}

	@Override
	public void onResume()
	{
		Utils.Log( "Splash onResume", this );

		// Suite tests sur les préférences
		SharedPreferences settings = getSharedPreferences( GAME_PREFERENCES,
				MODE_PRIVATE );
		if ( settings.contains( "UserName" ) )
		{
			String user = settings.getString( "UserName", "Default" );
			if ( settings.contains( "BestScore" ) )
			{
				user += " : ";
				user += settings.getInt( "BestScore", 0 );
			}
			Utils.Log( user, this );
		}

		super.onResume();
	}

	@Override
	public void onPause()
	{
		Utils.Log( "Splash onPause", this );

		// Stop animation
		ImageView imageView_splash_logo = ( ImageView ) findViewById( R.id.imageSplash );
		imageView_splash_logo.clearAnimation();

		super.onPause();
	}

	@Override
	public void onStop()
	{
		Utils.Log( "Splash onStop", this );
		super.onStop();
	}

	@Override
	public void onDestroy()
	{
		Utils.Log( "Splash onDestroy", this );
		super.onDestroy();
	}
}